/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package carreras.entidades;

import carreras.logger.CarrerasLogger;
import java.util.ArrayList;

/**
 *
 * @author Fanky10 <fanky10@gmail.com>
 */
public class CatCorredorAuto extends ArrayList<CorredorAuto>{
    /**
     * v1.0 
     * filtra por dni entero
     * v1.1 
     * filtra por el comienzo del dni string
     * @param sDNI
     * @return 
     */
    public CatCorredorAuto filtrarDNI(String sDNI){
        if(sDNI == null || sDNI.trim().isEmpty()){
            return this;
        }
//        final int dni = Integer.parseInt(sDNI);
        final CatCorredorAuto reto = new CatCorredorAuto();
        for(final CorredorAuto ca: this){
//            if(ca.getCorredor().getDni() == dni){
            if(String.valueOf(ca.getCorredor().getDni()).startsWith(sDNI)){
                reto.add(ca);
            }
        }
        return reto;
    }
    public CatCorredorAuto filtrarApellido(String apellido){
        if(apellido == null || apellido.trim().isEmpty()){
            return this;
        }
        final CatCorredorAuto reto = new CatCorredorAuto();
        for(final CorredorAuto ca: this){
            if(ca.getCorredor().getApellido().toLowerCase().startsWith(apellido.toLowerCase())){
                reto.add(ca);
            }
        }
        return reto;
    }
    
    public CatCorredorAuto getGanadoresCat() {
        //una vez eliminados los perdedores, y reordenados.
        //NEW REQ. informe de ganadores por cat.
        //armar un arreglo de ganadores por cat.
        //y eliminarlo de la comp. ya que es win. cat. no tiene que aparecer mas (:
        //si luego de todo eso, no hay mas corredores.
        //lanzar una exception
        //algo como: Competencia finalizada
        //y permitir ver informe, con mejor tiempo, cat, etc. :P
        //ver si es mejor hacerlo con una sql-query
        CatCorredorAuto reto = new CatCorredorAuto();
        //como prueba lo pongo aca, pero tendria que estar dentro del arreglo de corredores (:
        //algo como getGanadoresCategoria.
        int count_cat = 0;
        int id_cat_actual = -1;
        
        for (int i =0; i<this.size();i++) {
            CorredorAuto ca = this.get(i);
            //cambio categoria.?
            if (ca.getCategoria().getId() != id_cat_actual) {
                if(count_cat == 1){//si el anterior es unico ganador!
                    CorredorAuto winner = this.get(i-1);
                    reto.add(winner);
                }
                id_cat_actual = ca.getCategoria().getId();
                count_cat = 1;//encontre uno
            } else {
                count_cat++;
            }
        }
        
        for(CorredorAuto ca: reto){
            CarrerasLogger.debug(CatCorredorAuto.class, "se ha eliminado: "+ca.toString());
        }
        
        return new CatCorredorAuto();
    }
}
